looking a wood sprite in the forest
Pandoc generate pdf from markdown
Intro
始终不太习惯 word/wps 类工具编辑文本,再一次尝试用 pandoc
来生成 pdf,算是初步搞明白一点玩法,本文略过 markdown 的部分主要记录 latex
相关设定内容。
wkhtmltopdf
也是一个选项,但是转 HTML 再生成 pdf 就没啥挑战了额哈哈
Setup
首先完整安装 latex 包
$ brew uninstall --cask basictex
$ brew install --cask mactex
Latex template
---
title: "Your article title here"
date: 2023-02-20
fontsize: 12pt
# fc-list :lang=zh
#mainfont: "PingFang SC"
mainfont: "Sarasa Mono SC"
# monofont: "FantasqueSansM Nerd Font Mono"
monofont: "Sarasa Mono SC"
# 中文换行支持
lang: zh-CN
geometry: margin=2cm
# 设置双栏
# classoption=twocolumn
---
在 markdown 文档的最前面加入以上 metadata 简化命令参数设定,实际效果等价于
…Flair-58 Espresso Maker
flair-58
https://flairespresso.com/product/flair-58/
周末浪费了2天豆子,终于折腾出比较理想的设定
- 预热:浅烘 = 3档,中烘 = 2档,深烘 = 1档
- 磨豆:C40 调到 8 格(浅烘豆 +=1)
奶泡机没到位,先用娃的小奶锅煮 200ml Oatly 燕麦奶,稍热就好,没有打出泡沫也就无所谓拉花了
PlanB: 微波炉加热 + 宜家 ¥9.9 手持奶泡器
我买的优化后版本默认配无底手柄 + 58mm 18g粉碗,而上半年批次的好像是 20g粉碗,底部没有凹弧线,然后分水网和冲煮头是一体的,每杯都得拆下来清理,现在只需要拆手柄洗洗粉碗和分水网就好,方便连续出杯(但是对于没有多个手柄和粉碗的初阶用户来说,重新填粉加水的操作并不连续 -.-)
群里有大佬改装了底座和支架的方案,解决下压前倾问题和使用12cm+的秤
而无底手柄安装还不太熟练,经常要弯腰低头去看小翅膀有没有卡到位,然后注水再安装压力表(顺便当预浸泡),18g豆出 36g液体,如果粉磨得过细,下压会很费劲
虽然目前 5-9bar 之间压的曲线还不太稳定,偶尔通道也不太顺滋到杯外,但是香浓的 crema 已然远超预期(其实很容易过萃,但是家属喝不出来😂)
试了下用冰的屈臣氏做 coffee soda,难喝🤢
好多想买的配件:拉花奶缸、粉锤、布粉器、鼠尾粉碗、粉饼垃圾盒
update: 2022-08-19 14:09:08
买了新的拉花缸和称,但是懒到完全不想碰牛奶,only pure coffee and water…
早晨的冲煮开始逐渐暴躁,直接磨58g粉分3次装填、下压、出液到一个杯里,再加冰块分装成两份 long black 出门,少洗两次杯子动作也更流畅~大概15-20分钟完成
…剁手好物推荐
- Insta360 GO2 拇指运动相机
- 巷贩小酒 - 东方甄选金酒
- Reebok royal techque 板鞋
- ALTRA Escalante 2.5 轻量零落差跑鞋
- SENNHEISER IE300 耳机
- PhD 能量棒
Volvo v60
因为家庭新成员加入,所以买车的优先级提了上来。一开始考虑大尺寸6/7座suv,能装全家人短途出行,比如highlander, outlander, explorer, Pajero…后来因为今年各种新款上市,到最终提车时间有点晚,再加上城市拥堵和停车问题,回归到最初的选项也是一直种草的旅行车Volvo v60
中间还去看过Jaguar和Alfa Romeo,可惜后排空间有点小,对外型内饰非常满意,动力和操控也很可以,尤其Julie的前脸颜值太命中我了,一直对mx5这类笑脸无法抗拒…
V60在4s店试驾的豪华版,刚开始还挺不适应转向手感和油门刹车的,感觉都很沉很重。比起来以前开过的各种小钢炮和家用轿车,沉着有余灵活不够,前期不熟悉的时候操作起来都得小心翼翼。
最后订车选了致远焰影蓝运动款,因为厂家直销的关系也没讲价,就跟销售要了行车记录仪和儿童座椅。目前开两个月小一千公里的行程,大概总结些点吧
- 外观线条比例,审美观因人而异,但是V60各处都在我的区间内
- nappa皮座椅舒适和支撑都很到位,前排有可调的腿拖和腰撑。对豪华版的实木装饰水晶档杆其实没啥需求,氛围灯也蛮简约,没有那么夜店风。可惜选配的交车时间太长,不然座椅通风、冬季包、米色内饰都想加
- 后排空间坐两人还行,但是中间的地台太高,不适合长途5人出行
- 后备箱就不用夸了,狗子的航空箱一直塞在里面,出去玩很方便,去宜家就把后座放平。6月份搬家就跑了两趟,上次搬家借老王的a3可拉了56趟
- 48v电机+autohold,起步平顺没有纯燃油车型起步轰发动机那个颤抖
- 低转油门动力响应略有延迟,升档不算很迅速,不过相比起golf,508要好很多
- 油耗市区日常11升百公里,跑机场高速能到6.1左右,平时一个月加一次满箱油,推荐95号
- 方向盘虚位明显,过弯会习惯性多打一些位置,转向比hatchback车型都要重许多。前脸两侧的存在感明显,低坐姿的时候会开得谨慎,反而不会觉得屁股有什么阻碍
- 底盘确实在开过的车里算得上优秀,过弯和滤震都很扎实。静音实属一般,风噪胎噪在后排(或者车速超过100)尤其明显,所以也就不考虑顶上行李箱
- autopilot 模式在跑高速时非常愉悦,车道保持比我打方向顺滑多了,跟前车保持车距也很可靠,另外养成了并线前一定先打灯的习惯,否则车子会自己修正。能称为瑕疵的就是自动刹车不够线性,乘客会有明显的拉扯感甚至点头;拥堵路段还得切回手动模式,跟车距离在我这边太容易被加塞
Self Host Maddy Mail Server
maddy
Composable all-in-one mail server. https://github.com/foxcpp/maddy
准备自建系列服务替换掉 google 全家桶,先试了传统的 Postfix, Dovecot, OpenDKIM, OpenSPF, OpenDMARC 套餐,但是本人水平菜,机器配置也不高,折腾两天还没跑起来,正好看到订阅的 changelog 推荐了 maddy 1 于是搓搓手气试试这个邮局方案,以下是满足个人喜好的优点
- 基于 golang 生态依赖少,方便打镜像
- 验证数据存在 sqlite 里也很轻量
- 没有 web 端,只需要 imap + thunderbird 即可
- 配置文件相对简单
install
mkdir -p /data/maddy
# hard link caddy's crt and key to maddy
ln var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/${domain}/${domain}.crt /data/maddy/${domain}.crt
ln var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/${domain}/${domain}.key /data/maddy/${domain}.key
# foxcpp/maddy:v0.4.2
podman run \
--name maddy \
-v /data/maddy:/data \
-p 25:25 \
-p 143:143 \
-p 587:587 \
-p 993:993 \
-p 465:465 \
yanyaoer/maddy:master
# add user
podman run --rm -it -v /data/maddy:/data --entrypoint /bin/maddyctl yanyaoer/maddy:master creds create yanyao@mail.yadanhe.com
参考文档配置2 完后发送邮件对方可收,本地 thunderbird 接收回复邮件时有问题
…Utteranc Comments
utterances - A lightweight comments widget built on GitHub issues. Use GitHub issues for blog comments, wiki pages and more!
install
install utterances on your repo
add the script to your template
<script src="https://utteranc.es/client.js"
repo="[ENTER REPO HERE]"
issue-term="pathname"
theme="github-light"
crossorigin="anonymous"
async>
</script>
for exsamples https://github.com/yanyaoer/yanyaoer.github.io/commit/f2508ce7557d372f909f68ee32371f86895fd92f
done.
…Zotero as personal knowledge management
Zotero 常用于科研的文献管理,由 firefox 浏览器插件发展到现在有了独立的桌面和移动客户端。
- 本身具备简易的 rss 订阅功能可以用来追踪论文的更新
- 注册在线账户后支持导出资料库给其他同学订阅
- 浏览器插件 zotero connectors 则类似各类笔记应用的 web clipper,方便导入各种资料。注意科学上网加载完整页面后再进行保存
- 通过插件可以扩展出许多其他功能,比如文件同步、高级档案管理
quickstart
brew cask install zotero
这里简单用 caddy2 搭建 webdav 来同步附件,就没用高级的 zotfile
至于自带的笔记功能怎么说呢~ 已经适应不能这种风格了
add-ons | link |
---|---|
quicklook | https://github.com/mronkko/ZoteroQuickLook/releases |
markdown | https://addons.thunderbird.net/zh-cn/thunderbird/addon/markdown-here-xul/ |
subscription
https://arxiv.org/list/cs/recent 康奈尔大学提供的免费论文预览平台,主要订阅 cs.SD 音频相关更新
https://academic.microsoft.com/ 谷歌学术、微软学术也可以用来搜索一些关键词并订阅推送
https://www.storkapp.me/ 提供关键词订阅推送到邮箱
https://sci-hub.tw/ 实在找不到的下载就靠毛子的共享服务
将码农常用的文档工具 gitbook 转为 pdf
brew cask install calibre
sudo npm install -g gitbook-cli
gitbook install # for gitbook plugin
git clone https://github.com/prometheus/docs.git
gitbook pdf
ps: gitbook 开源版本已经很久不维护了,可以换到 honkit fork 的版本
…Rss2email
距离上次从 https://blogtrottr.com 迁移 rss 订阅到 feedly 差不多五六年了, 这会网络不可用的状况又变得严重些,干脆还是用自建服务来接收感兴趣的内容, 当然备选方案也不少:
- https://github.com/miniflux/miniflux
- https://github.com/SSilence/selfoss
- https://github.com/FreshRSS/FreshRSS
- https://git.tt-rss.org/fox/tt-rss
出于复古心理顺便减少对应的 app 安装选择问题,又选择了回归 email 方式订阅更新
安装配置
rss2email 的安装到简单,参考 官方文档
直接 apt install rss2email
,默认配置会发送文本邮件,修改 html-mail=True
,
在我的环境里 smtp over sendgrid 很容易超配额,sendmail 基本发送不出去,
就配上 imap.google 账户自己发给自己啦~
从 feedly 导出 opml 文件然后 r2e opmlimport
完事大吉
需要注意的是,在 r2e run
的执行过程中对配置文件进行修改非常容易被覆盖 1,不要同时搞太多操作就好,
update: 2020-09-18 17:34:49
修改参数 force-from = True
,默认会从 feed 里优先提取作者或者发布站点的邮箱,导致 gmail 过滤器失败
定时任务
现代 linux 发行版本(比如这里用的 ubuntu 20.04),默认不带 cronjob 服务,改为 systemd 来管理各种服务,定时任务的写法稍微麻烦了些,先用当前 user 权限来 $HOME/.config/systemd/user
写入定时任务配置
Deploy bitwarden_rs with podman
bitwarden_rs1 是个用 rust/rocket 编写的非官方 api 实现, dotnet 版本有点儿不太适合手头的部署环境
这里用比较现代的 podman2 来运行 docker 服务
podman run -d --name bitwarden -v /bw-data/:/data/:Z -e ROCKET_PORT=8080 -p 8080:8080 bitwardenrs/server:latest
podman generate systemd --name bitwarden --files
mv container-bitwarden.service /etc/systemd/system/
systemctl --user enable /etc/systemd/system/container-bitwarden.service
systemctl --user start container-bitwarden.service
然后用 nginx 或者 caddy 代理一下 8080 端口即可连接客户端
brew install bitwarden-cli # npm install -g @bitwarden/cli
bw config server https://bw.myserver.com
update 2021-04-01 build bitwaden_rs from source
# install rust
apt install git make gcc libssl-dev pkg-config curl
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
# build bitwarden_rs
git clone https://github.com/dani-garcia/bitwarden_rs/
cd bitwarden_rs/
cargo build --features sqlite --release
cp target/release/bitwarden_rs /usr/local/bin/
# download bw_web_vault from https://github.com/dani-garcia/bw_web_builds/releases
edit /etc/systemd/system/bitwarden.service
…Minio Storage Service
min.io 来自前 glusterFS 团队的分布式存储项目, 兼容 aws s3 / google cloud storage 接口,支持多磁盘、多节点,伸缩扩容方便, golang 编写+单执行文件部署,非常适合用 k8s 编排复制来搭建私有对象存储服务
没有生产环境的使用经验,以下仅用于业余尝鲜 六一节礼物
GNU/Linux 下载安装
wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio
chmod +x /user/local/bin/minio
添加用户、组和配置文件
groupadd --system minio
useradd --system --gid minio --shell /usr/sbin/nologin --comment "Minio file server" minio
mkdir -p /data/minio
chown -R minio:minio /data/minio
# replace minio.service with your own config, eg. User,Group
wget https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service -O /etc/systemd/system/minio.service
配置端口和密钥
# optional. run `uuidgen` to creates AK/SK
cat <<EOF >> /tmp/minio
MINIO_VOLUMES="/data/minio/"
MINIO_OPTS="--address :9199"
MINIO_ACCESS_KEY=`uuidgen`
MINIO_SECRET_KEY=`uuidgen`
EOF
启动服务
systemctl enable minio.service
systemctl start minio.service
客户端 mc 使用说明参考官方文档好了,和 s3 命令行也没太多区别, 甚至可以用来做 gcs/s3 代理用
…